#include "aboutdialog.h"
#include "versionmanager.h"
#include "updatemanager.h"
#include "configmanager.h"
#include <QApplication>
#include <QDesktopServices>
#include <QUrl>
#include <QPixmap>
#include <QPainter>
#include <QFont>
#include <QDebug>

AboutDialog::AboutDialog(QWidget* parent)
    : QDialog(parent)
    , m_appNameLabel(nullptr)
    , m_versionLabel(nullptr)
    , m_descriptionLabel(nullptr)
    , m_closeButton(nullptr)
    , m_mainLayout(nullptr)
    , m_updateAvailable(false)
    , m_isCheckingUpdate(false)
{

    // 设置窗口标题
    setWindowTitle(tr("关于"));

    // 使用统一的版本管理系统
    m_currentVersion = LimeReader::AppVersion::getAppVersion();

    setupUI();
    setupStyles();

    setModal(true);
    setFixedSize(DIALOG_WIDTH, DIALOG_HEIGHT);
}

AboutDialog::~AboutDialog()
{
}

void AboutDialog::setupUI()
{
    m_mainLayout = new QVBoxLayout(this);
    m_mainLayout->setSpacing(15);
    m_mainLayout->setContentsMargins(30, 30, 30, 30);  // 增加上下边距

    // 添加顶部间距
    m_mainLayout->addSpacing(25);  // 增加顶部间距

    // 应用名称：影谷长图处理大师
    m_appNameLabel = new QLabel(tr("影谷长图处理大师"), this);
    m_appNameLabel->setObjectName("appNameLabel");
    m_appNameLabel->setAlignment(Qt::AlignCenter);
    m_appNameLabel->setWordWrap(true);  // 允许换行
    m_appNameLabel->setMinimumHeight(40);  // 设置最小高度确保文字不被截断

    // 版本信息
    m_versionLabel = new QLabel(tr("版本 %1").arg(m_currentVersion), this);
    m_versionLabel->setObjectName("versionLabel");
    m_versionLabel->setAlignment(Qt::AlignCenter);

    // 联系方式
    m_descriptionLabel = new QLabel(tr("wechat: shadow-valley"), this);
    m_descriptionLabel->setObjectName("contactLabel");
    m_descriptionLabel->setAlignment(Qt::AlignCenter);

    // 添加到主布局
    m_mainLayout->addWidget(m_appNameLabel);
    m_mainLayout->addSpacing(5);  // 最小间距
    m_mainLayout->addWidget(m_versionLabel);
    m_mainLayout->addSpacing(15);  // 增加间距
    m_mainLayout->addWidget(m_descriptionLabel);

    m_mainLayout->addStretch();

    // 关闭按钮 - 与用户信息对话框样式一致
    m_closeButton = new QPushButton(tr("关闭"), this);
    m_closeButton->setObjectName("closeButton");
    m_closeButton->setFixedHeight(36);
    m_closeButton->setMinimumWidth(80);

    QHBoxLayout* buttonLayout = new QHBoxLayout();
    buttonLayout->addStretch();
    buttonLayout->addWidget(m_closeButton);
    buttonLayout->addStretch();

    m_mainLayout->addLayout(buttonLayout);
    m_mainLayout->addSpacing(10);

    // 连接信号
    connect(m_closeButton, &QPushButton::clicked, this, &QDialog::accept);
}

void AboutDialog::setupStyles()
{
    setStyleSheet(R"(
        QDialog {
            background-color: #F5F5F5;
        }

        #closeButton {
            background-color: #f0f0f0;
            color: #333;
            border: 1px solid #ccc;
            border-radius: 4px;
            padding: 6px 12px;
            font-size: 11pt;
        }

        #closeButton:hover {
            background-color: #e0e0e0;
            border-color: #999;
        }

        #closeButton:pressed {
            background-color: #d0d0d0;
        }

        #appNameLabel {
            font-size: 18pt;
            font-weight: 600;
            color: #2C3E50;
            margin: 15px 0;
            line-height: 1.4;  /* 增加行高确保文字不被截断 */
            padding: 5px 0;    /* 增加内边距 */
        }

        #versionLabel {
            font-size: 11pt;  /* 从13pt缩小到11pt */
            color: #5D6D7E;
            margin: 5px 0;
        }

        #contactLabel {
            font-size: 10pt;
            color:rgb(184, 184, 184);
            margin: 10px 0;
        }
    )");
}

void AboutDialog::setCurrentVersion(const QString& version)
{
    m_currentVersion = version;
    m_versionLabel->setText(tr("版本 %1").arg(version));
}

void AboutDialog::setServerVersion(const QString& version)
{
    m_serverVersion = version;
    // 简化版本，不再显示服务器版本信息
    Q_UNUSED(version);
}

void AboutDialog::setUpdateAvailable(bool available, const QString& serverVersion)
{
    m_updateAvailable = available;
    m_serverVersion = serverVersion;
    // 简化版本，不再处理更新状态
    Q_UNUSED(available);
    Q_UNUSED(serverVersion);
}

void AboutDialog::setUpdateInfo(const QString& version, const QString& downloadUrl, const QString& releaseNotes, const QString& md5, const QString& fileSize)
{

    m_serverVersion = version;
    m_downloadUrl = downloadUrl;
    m_releaseNotes = releaseNotes;
    m_md5Hash = md5;

    // 自动设置为有更新可用
    setUpdateAvailable(true, version);
}

void AboutDialog::onCheckForUpdates()
{
    // 简化版本：不再处理检查更新功能
    // 保留方法以防外部调用导致崩溃
}


void AboutDialog::updateUpdateButton()
{
    // 简化版本：不再处理更新按钮状态
    // 保留方法以防外部调用导致崩溃
}

